تطبيقات

أتمتة تصدير كالك إلى PDF

أتمتة حفظ أوراق ليبر أوفيس كالك بتنسيق PDF باستخدام الماكرو: دليل شامل

تُعد برامج الجداول الممتدة أداة لا غنى عنها في بيئات العمل الحديثة، حيث يتم الاعتماد عليها في تحليل البيانات، إعداد التقارير، وتنظيم المعلومات. من بين هذه البرامج، يُعتبر ليبر أوفيس كالك (LibreOffice Calc) خيارًا مفتوح المصدر يتمتع بمرونة عالية وإمكانيات قابلة للتخصيص تتفوق على العديد من البدائل التجارية. من أبرز ما يميز هذا البرنامج هو دعمه لتقنيات الماكرو (Macro) التي تسمح بأتمتة الإجراءات المتكررة، بما في ذلك حفظ أوراق العمل بتنسيق PDF تلقائيًا دون تدخل يدوي متكرر.

تتمثل أهمية هذه العملية في توفير الوقت وتقليل الأخطاء البشرية، خاصةً في الحالات التي تتطلب حفظ ملفات متعددة بشكل يومي أو دوري، أو ضمن عمليات إنتاج تقارير مؤتمتة. المقال التالي يتناول بتفصيل عميق كيفية إعداد ماكرو بلغة BASIC الخاصة بليبر أوفيس لأتمتة حفظ ورقة عمل بصيغة PDF، مع توضيح مفصل لكل خطوة برمجية، وأفضل الممارسات المصاحبة لهذا الإجراء.


مقدمة في أتمتة العمليات باستخدام ماكرو في LibreOffice

ما هو الماكرو في ليبر أوفيس؟

الماكرو هو مجموعة من التعليمات البرمجية تُكتب بلغة BASIC (أو Python أو JavaScript أو LibreOffice Basic)، وتُستخدم لتنفيذ أوامر معينة تلقائيًا داخل مستندات LibreOffice. يُستخدم الماكرو لتكرار الإجراءات المتكررة، مما يؤدي إلى تحسين الكفاءة وتبسيط العمل.

لماذا استخدام الماكرو لحفظ ملفات PDF؟

يتطلب حفظ الملفات بصيغة PDF عادةً خطوات يدوية متعددة: فتح الملف، الضغط على “تصدير كـ PDF”، تحديد خيارات التصدير، ثم اختيار الموقع المناسب. مع تكرار العملية، تصبح هذه الخطوات عبئًا على المستخدم. هنا تأتي أهمية الماكرو، الذي يقوم بتنفيذ كل هذه الأوامر برمجيًا بضغطة زر واحدة، أو حتى تلقائيًا عند تنفيذ حدث معين.


التحضيرات الأولية لكتابة ماكرو

1. تفعيل الماكرو

قبل البدء، يجب التأكد من تفعيل الماكرو في LibreOffice، حيث يتم تعطيله افتراضيًا لأسباب أمنية. يتم ذلك من خلال:

  • الذهاب إلى Tools > Options > LibreOffice > Security.

  • النقر على زر Macro Security.

  • اختيار مستوى الأمان المناسب، ويُفضل أثناء التطوير اختيار “متوسط” لتجنب تعطيل الماكرو.

2. إعداد ورقة العمل

يجب التأكد من أن الورقة المراد تصديرها إلى PDF جاهزة، وتتضمن البيانات اللازمة، وأنه قد تم حفظ ملف Calc (.ods) مسبقًا، لأن عملية التصدير تعتمد على مسار الملف الأساسي.


الكود الكامل للماكرو: حفظ ورقة العمل كـ PDF

فيما يلي كود ماكرو متكامل مكتوب بلغة LibreOffice Basic يقوم بحفظ الورقة النشطة بتنسيق PDF تلقائيًا إلى مجلد محدد:

basic
Sub ExportToPDF Dim oDoc As Object Dim oSheet As Object Dim oDescriptor As Object Dim sURL As String Dim sPDFPath As String Dim sSheetName As String ' الحصول على المستند النشط oDoc = ThisComponent ' التحقق من حفظ المستند مسبقًا If oDoc.hasLocation() = False Then MsgBox "يرجى حفظ الملف أولاً قبل التصدير إلى PDF", 48, "خطأ" Exit Sub End If ' تحديد اسم الورقة النشطة oSheet = oDoc.CurrentController.ActiveSheet sSheetName = oSheet.Name ' إنشاء وصف التصدير oDescriptor = createUnoService("com.sun.star.beans.PropertyValue") Dim aProps(1) As New com.sun.star.beans.PropertyValue ' تحديد نطاق التصدير: الورقة الحالية فقط aProps(0).Name = "FilterName" aProps(0).Value = "calc_pdf_Export" aProps(1).Name = "FilterData" aProps(1).Value = Array( _ MakePropertyValue("Selection", oSheet), _ MakePropertyValue("SinglePageSheets", True) _ ) ' إنشاء مسار حفظ PDF sURL = oDoc.URL sURL = ConvertToURL(Left(sURL, InStrRev(sURL, "/"))) sPDFPath = sURL & sSheetName & ".pdf" ' تنفيذ التصدير oDoc.storeToURL(sPDFPath, aProps()) MsgBox "تم حفظ الورقة '" & sSheetName & "' كـ PDF بنجاح.", 64, "تم التصدير" End Sub Function MakePropertyValue(cName As String, uValue) As com.sun.star.beans.PropertyValue Dim oPropertyValue As New com.sun.star.beans.PropertyValue oPropertyValue.Name = cName oPropertyValue.Value = uValue MakePropertyValue = oPropertyValue End Function

تحليل الكود البرمجي بالتفصيل

ThisComponent

يمثل المستند الحالي المفتوح في واجهة ليبر أوفيس، سواء كان Calc أو Writer أو Impress.

oDoc.hasLocation()

تُستخدم للتحقق من أن المستند قد تم حفظه مسبقًا، لأن storeToURL يعتمد على وجود مسار URL صالح.

FilterName = "calc_pdf_Export"

تُحدد نوع التصدير، وهو في هذه الحالة PDF خاص بجداول Calc.

FilterData

مصفوفة تحتوي على إعدادات التصدير، بما في ذلك تحديد الورقة الحالية فقط، دون غيرها من الأوراق الموجودة في المستند.

storeToURL

هي الدالة الرئيسية التي تقوم بعملية التصدير إلى الملف الخارجي بناءً على المسار والإعدادات المحددة.


إضافة تحسينات إلى الماكرو

1. التصدير باستخدام اسم مخصص

يمكن إضافة إمكانية إدخال اسم مخصص للملف من المستخدم:

basic
Dim sUserFileName As String sUserFileName = InputBox("أدخل اسم ملف PDF المطلوب:", "اسم الملف") If sUserFileName = "" Then Exit Sub sPDFPath = sURL & sUserFileName & ".pdf"

2. حفظ جميع الأوراق دفعة واحدة

في حالة الحاجة لتصدير كل ورقة في الملف إلى PDF منفصل:

basic
Sub ExportAllSheetsToPDF Dim oDoc As Object Dim i As Integer Dim sURL As String Dim oSheets As Object Dim oSheet As Object Dim sSheetName As String Dim aProps(1) As New com.sun.star.beans.PropertyValue oDoc = ThisComponent oSheets = oDoc.Sheets sURL = ConvertToURL(Left(oDoc.URL, InStrRev(oDoc.URL, "/"))) For i = 0 To oSheets.getCount() - 1 oSheet = oSheets.getByIndex(i) sSheetName = oSheet.Name aProps(0).Name = "FilterName" aProps(0).Value = "calc_pdf_Export" aProps(1).Name = "FilterData" aProps(1).Value = Array( _ MakePropertyValue("Selection", oSheet), _ MakePropertyValue("SinglePageSheets", True) _ ) oDoc.storeToURL(sURL & sSheetName & ".pdf", aProps()) Next i MsgBox "تم حفظ جميع الأوراق كـ PDF.", 64, "تم التنفيذ" End Sub

جدول الإعدادات الخاصة بتصدير PDF في Calc

الخاصية القيمة الوظيفة
FilterName “calc_pdf_Export” تحديد نوع التصدير كملف PDF خاص بـ Calc
Selection اسم الورقة (Sheet Object) تحديد الورقة المطلوب تصديرها
SinglePageSheets True تصدير الورقة في صفحة واحدة
PageRange “1-2” (اختياري) لتحديد نطاق الصفحات عند الطباعة، غير إلزامي في Calc
ExportBookmarks False يستخدم غالبًا في ملفات Writer وليس Calc

تطبيق الماكرو وربطه بزر داخل Calc

لزيادة السهولة، يمكن ربط الماكرو بزر داخل ورقة العمل:

  1. من الشريط العلوي اختر Insert > Button.

  2. قم بسحب الزر داخل ورقة العمل.

  3. انقر بزر الفأرة الأيمن على الزر، واختر Assign Macro.

  4. اختر الماكرو ExportToPDF أو أي ماكرو آخر كتبته.

  5. اضغط موافق.


أفضل الممارسات والتوصيات

  • استخدم تسميات منظمة للملفات: تجنب الأحرف الخاصة والمسافات في أسماء ملفات PDF.

  • حفظ نسخة احتياطية: قبل تنفيذ ماكرو شامل لحفظ عدة أوراق، احفظ نسخة احتياطية من الملف تجنبًا لأي تلف.

  • اختبر الماكرو على ملفات تجريبية: لا تُطبق ماكرو جديدًا مباشرة على ملفات الإنتاج.

  • استخدام الأحداث Events: يمكن ربط الماكرو بأحداث مثل “عند فتح المستند” أو “عند الحفظ” لتفعيل الأتمتة التلقائية.

  • التوقيع الرقمي للماكرو: لتفادي ظهور تحذيرات أمان عند فتح المستندات على أجهزة مختلفة.


المراجع